package com.example.excelupload.controller;

import com.example.excelupload.model.Person;
import com.example.excelupload.service.ExcelUploadService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
public class ExcelUploadController {

    @Autowired
    private ExcelUploadService excelUploadService;

    // 首页：渲染 JSP
    @GetMapping("/")
    public String index() {
        return "index"; // /WEB-INF/jsp/index.jsp
    }

    // 上传：返回 JSON
    @PostMapping(value = "/upload", produces = "application/json;charset=UTF-8")
    @ResponseBody
    public ResponseEntity<Map<String, Object>> uploadFile(@RequestParam("file") MultipartFile file) {
        Map<String, Object> body = new HashMap<>();
        File tempFile = null;
        try {
            // 1) 临时文件
            tempFile = File.createTempFile("excel-", ".xlsx");
            file.transferTo(tempFile);

            // 2) 读取并生成 HTML
            List<Person> persons = excelUploadService.readExcel(tempFile);
            String htmlContent = excelUploadService.generateHtml(persons);

            // 3) 保存到静态资源（固定文件名）
            excelUploadService.saveHtmlToStatic(htmlContent, "generated.html");

            // 4) 返回 JSON
            body.put("success", true);
            body.put("message", "上传成功，已生成静态页面。");
            body.put("url", "/generated.html"); // 前端可据此打开静态页
            System.out.println(ResponseEntity.ok(body));
            return ResponseEntity.ok(body);
        } catch (Exception e) {
            body.put("success", false);
            body.put("message", "上传或生成失败：" + e.getMessage());
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(body);
        } finally {
            if (tempFile != null && tempFile.exists()) {
                // 清理临时文件
                //noinspection ResultOfMethodCallIgnored
                tempFile.delete();
            }
        }
    }
}
//@Controller
//public class ExcelUploadController {
//
//    @Autowired
//    private ExcelUploadService excelUploadService;
//
//    // 显示上传页面（返回 /WEB-INF/jsp/index.jsp）
//    @GetMapping("/")
//    public String index() {
//        return "index";
//    }
//
//    // 上传文件并生成静态 HTML 文件
//    @PostMapping("/upload")
//    public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
//        // 创建临时文件
//        File tempFile = File.createTempFile("excel-", ".xlsx");
//        file.transferTo(tempFile);
//
//        // 读取 Excel 数据并生成 HTML 内容
//        List<Person> persons = excelUploadService.readExcel(tempFile);
//        String htmlContent = excelUploadService.generateHtml(persons);
//
//        // 保存 HTML 内容到 static 目录，并使用固定文件名
//        excelUploadService.saveHtmlToStatic(htmlContent, "generated.html");
//
//        // 重定向回首页，并显示上传成功消息
//        return "redirect:/?success=1";
//    }
//}